#pragma once
#include "StimBase.h"
#include "StimObj.h"

class CStimTarget :
    public CStimBase, public CStimObj
{
public:
    CStimTarget(const enum Stims::ObjType& eObjType_);
    virtual ~CStimTarget(void);

    // prepare stimulus
    virtual void Reset          ();

    // change stimulus
    virtual void Update         (const CMatrix<double>& mEyePos_, const double& dYaw_) = 0;
    virtual void Draw           ();

    // other
    virtual std::string GetName () = 0;

    // setters
    virtual double&             SetEyeHeight()              {return _dEyeHeight;}
    CMatrix<double>&            SetTargetPosition()         {return _mTargetPosition;}

protected:
    //// input:
    // frustum and observer specification
    double                              _dEyeHeight;
    CMatrix<double>                     _mTargetPosition;

    //// variables:
    // computed once

    // display list
    GLuint                              _uTarget;
};
